// 知识点1：转发：某些函数需要将其一个或者多个实参联同类型不变的转发给其他函数，需要保留所有的性质，称为需要转发实参的所有性质

// 知识点2：如果一个函数参数是指向模版类型参数的右值引用（T&&）,则它对应的实参的const属性和右值/左值属性将得到保持，但此方法不能用于接受右值引用的函数

// 知识点3：当用于一个指向模版参数类型的右值引用参数时（T&&），forward()会保持实参类型的每个细节，头文件为utility，后必须加显式模版参数
#include "ex16_47.h"
#include <iostream>
#include <list>
#include <string>
#include <vector>
using namespace std;

void f(int& a, int&& b) { cout << a << " " << ++b << endl; }
int main(int argc, char** argv) {
  int i = 5;
  flip(f, 42, i);
  cin.get();
  return 0;
}